/**
 * mui.ajaxRequest
 * 封装mui.ajax请求，调用方式与一致
 */
(function(platform, call) {
	// type
	function is_prototype(data) {
		return Object.prototype.toString.call(data).toLowerCase();
	}

	function is_object(data) {
		return is_prototype(data) === '[object object]';
	}

	function encap_data(d) {
		return d;
	}

	function encap_params(p) {
		return p;
	}

	function post(url, encap) {
		encap = encap || encap_data;
		return function(data, succ_cb, err_cb) {
			data = data || {};
			mui.ajax(url, {
				data: encap(data),
				dataType: 'json', //服务器返回json格式数据
				type: 'post', //HTTP请求类型
				timeout: 10000, //超时时间设置为10秒；
				success: function(res) {
					succ_cb && succ_cb(res);
				},
				error: function(res) {
					succ_cb && succ_cb(res);
				}
			});
		};
	}

	function get(url, encap) {
		encap = encap || encap_params;
		return function(params, succ_cb, err_cb) {
			params = params || {};
			mui.ajax(url, {
				data: encap(data),
				dataType: 'json', //服务器返回json格式数据
				type: 'get', //HTTP请求类型
				timeout: 10000, //超时时间设置为10秒；
				success: function(res) {
					succ_cb && succ_cb(res);
				},
				error: function(res) {
					succ_cb && succ_cb(res);
				}
			});
		};
	}

	function createProxy(type, ajax, encap) {
		type = type || 'post';
		return function(url) {
			return type === 'GET' ?
				get(ajax + url, encap) :
				post(ajax + url, encap);
		};
	}
	var __encap_data = function(data) {
		if (is_object(data)) {
			var _data = new URLSearchParams();
			for (var key in data) {
				_data.append(key, data[key]);
			}
			return _data.toString();
		}

		return data;
	};
	var __default_proxy = function(baseURL, type) {
		var ajaxURL = baseURL;
		return createProxy(type, ajaxURL, __encap_data);
	};
	platform[call] = {
		createProxy: createProxy,
		defaultProxy: __default_proxy,
	};
})(window, 'N');
